// 维护所有连接的标签页
const tabConnections = new Map();

// 处理来自内容脚本的连接
chrome.runtime.onConnect.addListener((port) => {
    const tabId = port.sender?.tab?.id;
    if (!tabId){
        return;
    }
    console.log(`标签页${tabId}已连接`)
    // 存储连接
    tabConnections.set(tabId, port);
    // 消息转发处理
    port.onMessage.addListener((msg) => {
        handleMessage(msg, tabId);
    })
    // 断开连接清理
    port.onDisconnect.addListener(() => {
        tabConnections.delete(tabId);
        console.log(`标签页${tabId}已断开`)
    })
})

// 消息处理中心
function handleMessage(msg,senderTabId){
    console.log('收到消息:',{
        senderTabId,
        message:msg
    })
    switch (msg.type){
        case 'broadcast':
            // 广播给所有标签页
            broadcastMessage(msg,senderTabId);
            break;
        case 'direct':
            // 定向发送给特定标签页
            sendToTab(msg.targetTabId,msg)
            break;
        case 'group':
            // 发送给群组
            sendToGroup(msg.groupId,msg)
            break;
    }
}